package com.example.myproject.threadDemo.volatileDemo;

/**
 * Created by Mj on 2018/5/23.
 */
public class volatileTest {
    /**
     * volatile ->compile: ** lock addl $0x0
     * 1.将当前处理器缓存行的数据写回内存
     * 2.这个写回操作，会使其他CPU中缓存了该内存地址的数据无效
     * 使用CPU缓存一致性协议确保原子性  CPU->L1/L2/..->内存
     *
     * 最近  不锁总线，锁CPU缓存。总线锁太消耗性能:持有总线锁，会导致其他CPU不能访问总线->不能访问内存
     * 缓存锁定：若要锁定的内存地址存在CPU缓存中，则锁定包含该内存区域的缓存，并写到内存，使用缓存一致性协议确保修改原子性。
     * cache line : CPU缓存中可以分配最小存储单位。
     */
}
